package _type

import (
	"go.uber.org/zap"
	"strings"
)

var ErrChan chan Error

type Error struct {
	Msg string `json:"msg"`
}

func (e *Error) Error() string {
	return e.Msg
}

func ErrSystem(msg string) *Error {
	return &Error{Msg: msg + " " + "请联系管理人员处理"}
}

func ErrMsg(msg string) *Error {
	return &Error{Msg: msg}
}

func ErrOther(msg string) *Error {
	return &Error{Msg: msg + " " + "非系统级错误,可以正常运行"}
}

func PrintfLog(log *zap.Logger, msg ...string) {
	log.Info(StrPinJie(msg...))
}

func PrintfLogErr(log *zap.Logger, msg ...string) {
	log.Error(StrPinJie(msg...))
}

func StrPinJie(msg ...string) string {
	// 先计算总长度，再预分配
	total := 0
	for _, v := range msg {
		total += len(v)
	}
	var builder strings.Builder
	builder.Grow(total) // 精准 分配 内存 字节
	for _, v := range msg {
		builder.WriteString(v)
	}
	return builder.String()
}
